package com.zmn.plat.business.interfaces.price;

import com.zmn.plat.common.dto.category.AssCategoryDRO;
import com.zmn.plat.common.dto.price.ItemTo;
import com.zmn.plat.common.dto.price.advance.AdvanceFtProductCheckTariffQuery;
import com.zmn.plat.common.dto.price.advance.AdvanceFtProductQuery;
import com.zmn.plat.common.dto.price.advance.AdvanceProductItemQuery;
import com.zmn.plat.common.dto.price.advance.AdvanceProductQuery;
import com.zmn.plat.common.dto.product.base.ProductBaseDRO;
import com.zmn.plat.common.dto.product.tariff.TariffBackProductDRO;

import java.util.List;
import java.util.Map;

/**
 * 描述: 提前付流程接口类（所有接口前提是有计价器试点和预计价试点，专为提前付项目使用，接口是按照前台操作顺序来的）
 *
 * @author guoqiao
 * @since 2021/8/13 16:34
 */
public interface AdvanceFlowBService {

    /**
     * 描述: 1.根据查询条件查询该分类下的开通提前付非默认前台产品
     *
     * @param query 查询条件
     * @return List<ProductBaseDRO>
     * @author guoqiao
     * @since 2021/8/13 16:37
     */
    List<ProductBaseDRO> listShowProduct(AdvanceFtProductQuery query);

    /**
     * 描述: 2.根据查询条件查询项目集合
     *
     * @param query 查询条件
     * @return List<TariffProductItemDRO>
     * @author guoqiao
     * @since 2021/8/13 16:37
     */
    List<ItemTo> listItemByQuery(AdvanceProductItemQuery query);

    /**
     * 描述: 3.根据查询条件查询后台产品二级分类
     *
     * @param query 查询条件
     * @return List<AssCategoryDRO>
     * @author guoqiao
     * @since 2021/8/13 16:37
     */
    List<AssCategoryDRO> listCategTwoByQuery(AdvanceProductQuery query);

    /**
     * 描述: 4.根据查询条件查询后台产品
     *
     * @param query 查询条件
     * @return List<TariffBackProductDRO>
     * @author guoqiao
     * @since 2021/8/13 16:37
     */
    List<TariffBackProductDRO> listProductByQuery(AdvanceProductQuery query);

//    /**
//     * 描述: 5.根据查询条件查询项目价格集合
//     *
//     * @param query 查询条件
//     * @return List<ItemTo>
//     * @author guoqiao
//     * @since 2021/8/18 14:11
//     * @see MeterFlowBService#listQuoteByQuery(com.zmn.plat.common.dto.price.meter.MeterQuoteQuery)
//     */
//    @Deprecated
//    List<ItemTo> listItemPriceByQuery(AdvanceProductItemPriceQuery query);

    /**
     * 描述: 6.根据条件校验是否支持计价器
     * <p>计价器试点 and （计价器价格表 or （预计价试点 and 提前付价格表））</>
     *
     * @param query
     * @return java.util.HashMap<产品id, Boolean>
     * @author guoqiao
     * @since 2021/9/15 10:15
     */
    Map<Integer, Boolean> listCheckTariff(AdvanceFtProductCheckTariffQuery query);

    /**
     * 描述: 7.根据条件校验是否支持提前付报价
     * <p>计价器试点 and 预计价试点 and 提前付价格表</>
     *
     * @param query
     * @return java.util.HashMap<产品id, Boolean>
     * @author guoqiao
     * @since 2021/9/15 10:15
     */
    Map<Integer, Boolean> listCheckAdvance(AdvanceFtProductCheckTariffQuery query);

}
